package main

import (
	"fmt"
)

// 定义了函数类型F1, 含有两个int参数，一个int返回值
type F1 func(a, b int) int

// 为类型F1绑定方法show
func (f F1) show(a, b, c int) {
	fmt.Println("show方法被调用")
}

// 为类型F1绑定方法calc
func (f F1) calc(a, b, c int) {
	f(a, b)
	fmt.Println("calc方法被调用")
}

// 定义函数A1，含有两个int参数，一个int返回值
func A1(c, d int) int {
	return c + d
}

func main12() {
	// 因为函数A1()在声明结构上，与类型F1相同，所以，可以强制转换为F1，并赋给变量a
	a := F1(A1)

	// 变量a自动拥有了show和calc方法
	a.show(1, 2, 3)
	a.calc(1, 2, 3)
}
